package com.chushouya.manager.service.admin;


import com.chushouya.common.support.RequestUserContext;
import com.chushouya.manager.dto.admin.menu.*;
import com.chushouya.manager.dto.admin.menu.*;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 菜单功能业务
 */
public interface MenuService {

    /**
     * 查询用户菜单
     */
    List<RouterVO> getRouter(RequestUserContext userContext);

    /**
     * 查询用户的权限
     */
    Set<String> selectAdminPerms(Long adminUserId);

    /**
     * 查询商家的权限
     */
    Set<String> selectMerchantPerms(Long adminUserId);

    /**
     * 查询菜单列表
     */
    List<MenuListDTO> selectMenuList(MenuQuery query);

    /**
     * 查询菜单详情
     */
    MenuSaveDTO getMenuDetail(Long menuId);

    /**
     * 查询菜单树结构
     */
    List<MenuTreeDTO> getMenuTree(Integer systemType);

    /**
     * 查询当前角色已经分配的菜单IdList
     */
    List<Long> selectMenuIdListRoleId(Long roleId);

    /**
     * 删除菜单
     */
    void deleteMenu(Long menuId);

    /**
     * 新增菜单
     */
    Long addMenu(MenuSaveDTO menu);

    /**
     * 修改菜单
     */
    Long editMenu(MenuSaveDTO menu);

    /**
     * 查询所有的权限
     */
    Map<String, String> getButtonPermissions(Integer systemType);

    /**
     * 查询商家所有的菜单
     */
    Set<String> selectAllMerchantPerms();

    /**
     * 切换菜单状态
     */
    void changeMenuStatus(MenuStatusDTO menuStatusDTO);

}
